import { BullRootModuleOptions } from '@nestjs/bull'
import { CacheModuleOptions } from '@nestjs/cache-manager'
import { JwtModuleOptions } from '@nestjs/jwt'
import { TypeOrmModuleOptions } from '@nestjs/typeorm'
import { CaptchaOptions } from '@ttou/nest-captcha'
import { RedisClientOptions, RedisClusterOptions } from '@ttou/nest-redis'

export interface IConfig {
  /**
   * 应用
   */
  app: {
    /**
     * 端口号
     */
    port: number
    /**
     * 接口路径
     */
    apiPath: string
    /**
     * 文档路径
     */
    docPath?: string
    /**
     * 队列路径
     */
    queuePath: string
  }
  /**
   * 基础鉴权
   */
  basicAuth: {
    /**
     * 用户名
     */
    username: string
    /**
     * 密码
     */
    password: string
  }
  /**
   * JSON Web Token
   */
  jwt?: JwtModuleOptions
  /**
   * 数据库
   */
  typeorm?: TypeOrmModuleOptions
  /**
   * 缓存
   */
  cache?: CacheModuleOptions<RedisClientOptions>
  /**
   * Redis
   */
  redis?: RedisClientOptions | RedisClusterOptions
  /**
   * 验证码
   */
  captcha?: CaptchaOptions
  /**
   * 队列
   */
  bull?: BullRootModuleOptions
}
